جزوه · فصل پنجم · جلسه ۵۲ · Single User Mode ← بازگشت به فهرست
📘 فصل پنجم · جلسه ۵۲ Single User Mode (حالت تک‌کاربره)
📅 تاریخ: چهارشنبه، ۲۸ مرداد ۱۴۰۵ 👤 مدرس: محمد عابدینی 🐚 Zsh · 🐧 Debian (کالی) · 📦 Red Hat (AlmaLinux)
از این بخش حتماً در امتحان سوال می‌آید! حتماً روش‌های مختلف را با هم مقایسه کنید.
🔐 قبل از شروع، یه مثال ساده:

فرض کن رمز خونه‌ات رو گم کرده‌ای و نمی‌تونی وارد بشی. باید از یه راه دیگه (مثل پنجره) وارد خونه بشی و یه قفل جدید بزاری. توی لینوکس، Single User Mode همون پنجره‌ست! وقتی رمز root رو گم کردی یا سیستمت بالا نمیاد، با این روش وارد سیستم می‌شی و مشکل رو رفع می‌کنی.

▍ Single User Mode چیست؟

حالت تک‌کاربره (Single User Mode) یک حالت ویژه در لینوکس است که در آن:

🎯 کاربردهای اصلی:
  • ریست کردن رمز عبور کاربر root
  • تعمیر فایل‌های سیستمی خراب شده
  • رفع مشکلات مربوط به fstab یا پارتیشن‌بندی
  • بررسی و تعمیر فایل سیستم (با fsck)

▍ شرایط پیاده‌سازی

در امتحان معمولاً فرض بر این است که رمز GRUB وجود ندارد و شما دسترسی فیزیکی به سیستم دارید.

▍ روش‌های ورود به Single User Mode در توزیع‌های مختلف

🟠 دبیان / اوبونتو (Debian/Ubuntu)

در منوی GRUB، روی گزینه بوت E بزنید و به خط شروع با linux بروید. در انتهای آن، کلمه ro را به rw تغییر دهید و init=/bin/bash را اضافه کنید.

linux /boot/vmlinuz-... root=UUID=... ro quiet # تغییر به: linux /boot/vmlinuz-... root=UUID=... rw init=/bin/bash

سپس Ctrl+X یا F10 برای بوت کردن.

🔵 رد هت / الما / سنت‌اواس (RHEL/AlmaLinux/CentOS)

در منوی GRUB، روی گزینه بوت E بزنید و به خط شروع با linux یا linux16 بروید. در انتهای آن، rd.break و enforcing=0 را اضافه کنید.

linux /vmlinuz-... root=UUID=... ro quiet # تغییر به: linux /vmlinuz-... root=UUID=... rd.break enforcing=0

سپس Ctrl+X یا F10 برای بوت کردن.

تفاوت کلیدی در امتحان: در اوبونتو از init=/bin/bash و در رد هت/الما از rd.break استفاده می‌شود.

▍ مراحل کامل ریست کردن رمز root در آلما/رد هت

• مرحله ۱: ورود به Single User Mode با rd.break

در منوی GRUB، روی گزینه بوت E بزنید و به خط شروع با linux بروید. در انتهای آن، rd.break را اضافه کنید:

linux /vmlinuz-... root=UUID=... ro rd.break enforcing=0

توضیح: rd.break سیستم را قبل از mount شدن ریشه (root) متوقف می‌کند و شما را به یک شل اولیه (initramfs) می‌برد. enforcing=0 SELinux را غیرفعال می‌کند تا بعداً مشکلی برای لاگین نداشته باشید.

• مرحله ۲: Mount کردن سیستم فایل ریشه به صورت خواندنی-نوشتنی

در شل initramfs که وارد شدید، سیستم فایل ریشه در /sysroot Mount شده است، اما به صورت فقط خواندنی (ro). باید آن را به صورت خواندنی-نوشتنی (rw) Mount کنید:

switch_root:/# mount -o remount,rw /sysroot

• مرحله ۳: تغییر ریشه (chroot) به سیستم اصلی

switch_root:/# chroot /sysroot

توضیح: chroot شما را به محیط سیستم اصلی می‌برد تا بتوانید دستورات را روی آن اجرا کنید.

• مرحله ۴: تغییر رمز عبور root

sh-5.1# passwd root New password: ********
Retype new password: ********
passwd: all authentication tokens updated successfully.

توضیح: رمز جدید را دو بار وارد کنید.

اگر SELinux فعال باشد و رمز را عوض کنید، ممکن است بعد از ری‌بوت نتوانید با رمز جدید لاگین کنید. برای جلوگیری از این مشکل، حتماً enforcing=0 را در مرحله اول اضافه کنید یا بعد از تغییر رمز، فایل زیر را اجرا کنید:
touch /.autorelabel

• مرحله ۵: خروج و ری‌بوت

sh-5.1# exit switch_root:/# reboot -f

توضیح: با exit از محیط chroot خارج می‌شوید و با reboot -f سیستم را مجدداً راه‌اندازی می‌کنید.

▍ روش در اوبونتو/دبیان

در اوبونتو و دبیان، به جای rd.break از init=/bin/bash استفاده می‌شود:

linux /boot/vmlinuz-... root=UUID=... rw init=/bin/bash

بعد از بوت، مستقیماً به شل bash با دسترسی root وارد می‌شوید. سپس با passwd root رمز را تغییر دهید و با reboot -f سیستم را ری‌بوت کنید.

در اوبونتو نیازی به chroot نیست، چون مستقیماً وارد شل اصلی می‌شوید. اما در رد هت/الما، باید chroot /sysroot را اجرا کنید.

▍ جدول مقایسه روش‌ها

توزیع پارامتر GRUB نیاز به chroot توضیح
اوبونتو / دبیان init=/bin/bash ❌ خیر مستقیماً وارد شل bash با دسترسی root می‌شوید
رد هت / الما / سنت‌اواس rd.break enforcing=0 ✅ بله (chroot /sysroot) وارد initramfs می‌شوید و باید chroot کنید
سوال امتحانی احتمالی: «تفاوت روش ورود به Single User Mode در اوبونتو و رد هت چیست؟» پاسخ: در اوبونتو از init=/bin/bash و در رد هت از rd.break استفاده می‌شود.

▍ جمع‌بندی

✅ نکات کلیدی برای امتحان:
  • rd.break مخصوص خانواده رد هت است.
  • init=/bin/bash مخصوص خانواده دبیان است.
  • پس از تغییر رمز در رد هت، حتماً فایل سیستم را remount rw کنید.
  • برای خروج از محیط chroot: exit و سپس reboot -f.